package com.config.dao;

import java.util.Date;
import java.util.List;

import com.config.entity.ShiftConfig;
import com.base.dao.TemplateDao;

public interface ShiftConfigDao extends TemplateDao<ShiftConfig,Integer>{

	
	int getTotal();
	
	/**
	 *  查询指定生产线下正在使用的班制
	 * @param lineId
	 * @param belongTime
	 * @return
	 */
	ShiftConfig findShiftsByLineId(int lineId,String belongTime);
	/**
	 * 查询生产线下所有的班制
	 * @param lineId
	 * @return
	 */
	List<ShiftConfig> findShifts(int lineId);
	
	/**
	 * 查询指定班制下的所有班次信息
	 * @param fatherId
	 * @return
	 */
	List<ShiftConfig> findByShiftsId(int fatherId);
	
	/**
	 * 根据时间查询当前班次
	 * @param belongTime
	 * @param lineId
	 * @return
	 */
	ShiftConfig findShiftConfigByDate(int lineId,Date belongTime);
	
	/**
	 *  查询指定生产线下时间区间内正在使用的班制
	 * @param lineId
	 * @param belongTime
	 * @return
	 */
	ShiftConfig findShiftsByTime(int lineId,String startTime,String endTime);
	/**
	 * 根据日期获取班次的具体时间
	 * 如：2016-06-27 08:00:00|2016-06-27 16:00:00
	 * */
	 String gettime(ShiftConfig shift,String belongDate);
	 
	 /**
	  * 查询生产线下的所有班次信息
	  * @param lineId
	  * @return
	  */
	 List<ShiftConfig> findShiftConfigsByLine(int lineId);
	 /**
	  * 查询生产线下不同时间存在的班制
	  * @param lineId
	  * @param belongTime
	  * @return
	  */
	 ShiftConfig findShiftsByLine(int lineId,String belongTime);
	 
	 /**
	  * 获取指定父节点（可为null）下的所有记录条数
	  * @param fatherId，可为空
	  * @return
	  */
	 int countByFatherId(Integer fatherId);
	 
	 /**
	  * treegrid显示所有指定生产线下的所有班次配置，id为lineId
	  * @param id
	  * @param start
	  * @param limit
	  * @return
	  */
	 List<ShiftConfig> findByLineTreePage(Integer lineId, int start, int limit);
	 int countByLineTreePage(Integer lineId);
	 
	 /**
	  * 找到该生产线下的唯一有效记录
	  * @param lineId
	  * @return
	  */
	 ShiftConfig getEffectiveOne(Integer lineId);
}
